An important class of data communication networks transmits data between users in fixed or variable sized data packets. These networks typically provide communication paths between user equipment. Internally, such networks have switching or routing nodes, or network elements (NE), that are themselves interconnected for actually transmitting packets from a source to a destination. Network data packets are typically structured with a header and a payload data area: a header carries network-specific information for routing, flow control, and so forth, and a payload area most often carries user data. Switches, routers, and similar internal nodes are typically constructed from: ingress (or input) elements, which receive data packets from communication links; egress (or output) elements, which transmit data packets over communication links; a switch fabric that interconnects the ingress and egress elements; and a control function. Typically a physical line card comprises both an ingress and an egress elements, however the two elements may be two separate devices. A switch or router uses data packet header information to determine to which egress element a received data packet should be directed.
A switch fabric has one or more transmission paths (threads) for transmitting data between ingress and egress elements, and a fabric control function for allocating on a moment-to-moment basis as needed transmission paths to particular pairs of ingress and egress elements. Many fabric topologies are known in the art, for example buses, crossbars, Banyan networks and other hierarchical interconnections, fully-connected meshes, and so forth. The fabric control function generally: receives requests for a path between a pair of an ingress and a egress element; allocates a path when available and notifies the requesting elements; and releases an allocated path when the ingress-egress pair have completed their data transmission. This control function may be centralized, for example, in central control element, or may be distributed, for example, relying on the cooperative actions of the ingress and egress elements.
The prior art has found advantageous that switch fabrics operate synchronously and transfer data in fixed-size packets, known as fabric data units (FDUs). Synchronous fabric operation leads to simplified interfaces between ingress and egress elements and the fabric. Fixed-size FDUs lead to a simplified fabric controller function, because all switch paths may be synchronously allocated for one fixed time period. And short, fixed-size FDUs are advantageous because they can improve quality of service (QOS) by limiting interference between communication packet flows and improving latency and jitter.
However, fixed-size, short FDUs are not advantageous in all applications, particularly in applications where the switch must carry data packets of variable size. Variable-sized data packets are often found in multi-service (or multi-protocol) applications, and even in single protocol applications where the protocol inherently provides for such packets. In such application, fixed size FDUs introduce overhead because usually some data packets must be segmented (not all packets being an integer multiple of the FDU payload size). As is known, packet segmentation leads to switch overhead, because the last FDU of a data packet may transport a small packet segment (compared to the FDU payload size). Indeed, if the last segment of a communication packet is only one byte, then virtually all the last FDU will be wasted overhead. Also short size alone introduces overhead, because a greater fraction of switch throughput is used by FDU headers, not payload data.
Changing the fixed FDU size may not alleviate such overhead. Although shorter FDUs reduce overhead due to unused FDU capacity, they increase the overhead of FDU headers. On the other hand, longer FDUs reduce FDU-header overhead, but at the cost of increased overhead due to packet segmentation. They may also lead to increased latency and jitter.
Accordingly, the prior art is deficient in routers and switches for multi-service or multi-protocol applications that nevertheless have reduced overhead and high efficiency.